Prepare for release of PyNWB 4.0.0#2201
Merged
Merged
Conversation
Update the copyright year from 2017-2025 to 2017-2026 in Legal.txt, license.txt, README.rst, and docs/source/conf.py. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bump pinned dependency versions to the latest compatible releases via `pur` on requirements.txt, requirements-dev.txt, and requirements-opt.txt (requirements.txt and requirements-dev.txt were already current). Sync the matching linkml-runtime pin in requirements-doc.txt and manually update environment-ros3.yml, keeping its shared pins consistent with the resolved versions (numpy and pandas stay within hdmf's and pynwb's ceilings) and bumping the ros3-only matplotlib and dandi to latest. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## dev #2201 +/- ##
=======================================
Coverage 95.99% 95.99%
=======================================
Files 30 30
Lines 2970 2970
Branches 431 431
=======================================
Hits 2851 2851
Misses 67 67
Partials 52 52
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
# Conflicts: # requirements-doc.txt # requirements-opt.txt
HDF5 2.1.0 (h5py 3.16.0) requires the AWS region to be specified when opening an S3 URL with the ros3 driver, which broke the ROS3 streaming tests and the streaming gallery example. Pass aws_region="us-east-2" (the DANDI Archive S3 bucket region) at each ros3 open site, and add an aws_region argument to validate() so it can be forwarded when validating a file opened with the ros3 driver. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Refine the get_external_resources docstring and HERD tutorial wording to describe the linked vs stored HERD behavior, and add tqdm to the streaming example's install instructions. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The merge left validate() requesting "aws_region" from getargs without binding it to a variable, so getargs returned 7 values into 6 targets. This raised "too many values to unpack" on every validate() call and left aws_region undefined where it is forwarded to the io kwargs and get_cached_namespaces_to_validate(). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
oruebel
reviewed
Jun 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release PR for PyNWB 4.0.0.
Minor changes:
ROS3 CI fix: The
*-ros3jobs failed withOSError: ... AWS region wasn't specified. Root cause is environment drift: HDF5 2.1.0 / h5py 3.16.0 (released between the last greendevrun and this run) now require an explicit AWS region for the ROS3 driver. Fixed by passingaws_region="us-east-2"(DANDI Archive bucket region) at each ROS3 open site and adding anaws_regionargument tovalidate().Overlap with #2187 (Zarr validation): The
aws_regionaddition here touchesvalidate()/_validate_single_file/get_cached_namespaces_to_validate— the same code that #2187 refactors. However, I would like to pursue a different approach with regard tovalidate / get_cached_namespaces_to_validatethat needs to propagate through major versions of HDMF and PyNWB. For now, this change forwardsaws_regionalongside the existingdriverkwarg.validate()on a Zarr store remains broken on this branch (pre-existing).Before merging:
dev.requirements.txt,requirements-dev.txt,requirements-doc.txt,requirements-opt.txt, andenvironment-ros3.ymlto the latest versions,and update dependency ranges in
pyproject.tomland minimums inrequirements-min.txtas needed.Run
pip install pur && pur -r requirements-dev.txt -r requirements.txt -r requirements-opt.txtand manually update
environment-ros3.yml. Done viapur;requirements.txt/requirements-dev.txtwere already current.numpy/pandaskept withinhdmfandpandas<3ceilings.requirements-min.txtandpyproject.tomlranges left unchanged (no change needed). Not yet validated by the test/CI steps below.Legal.txt,license.txt,README.rst,docs/source/conf.py,and any other locations as needed Copyright year updated 2017-2025 → 2017-2026.
pyproject.tomlas needed No change needed; version is derived dynamically from the git tag.README.rstas needed Copyright year updated.src/pynwb/nwb-schemasubmodule as needed. Check the version number and commit SHAmanually. Make sure we are using the latest release and not the latest commit on the
mainbranch. Already at the2.10.0release tag.CHANGELOG.mdand any other docs as needed Left as(Upcoming)until the release date is known.(
python test.py -v -p -i -b -w -r > out.txt 2>&1). Try to remove all warnings.cd docs; make clean && make htmlbranch by going to https://github.com/NeurodataWithoutBorders/pynwb/actions/workflows/run_all_tests.yml, selecting
"Run workflow" on the right, selecting this branch, and clicking "Run workflow". Make sure all tests pass.
After merging:
docs/source/make_a_release.rstor use aliasgit pypi-release [tag]if set upGitHub releases page with the changelog
regro-cf-autotick-bot bot to create a PR updating the version of HDMF to the latest PyPI release, usually within
24 hours of release, or manually create a PR updating
recipe/meta.yamlwith the latest version numberand SHA256 retrieved from PyPI > PyNWB > Download Files > View hashes for the
.tar.gzfile. Re-render and updatedependencies as needed.
🤖 Generated with Claude Code